<html>
<head>
<link rel="stylesheet" href="../../js/sh/SyntaxHighlighter.css" type="text/css" />
<script src="../../js/sh/shCore.js"></script>
<script src="../../js/sh/shBrushJava.js"></script>
<style>

* {
font-family:Courier New,monospace;
  padding: 0;
  margin: 0;
  white-space: nowrap;
  font-size: 11px;
}

.dp-highlighter {
  white-space: nowrap;
  overflow: visible;
  width: 600px;
  font-size: 11px;
  font-family:Courier New,monospace;
}
</style>

</head>
<body>
<textarea name="code" class="java:nogutter" rows="15" cols="120">
/*
 * SmartGWT (GWT for SmartClient)
 * Copyright 2008 and beyond, Isomorphic Software, Inc.
 *
 * SmartGWT is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License version 3
 * as published by the Free Software Foundation.  SmartGWT is also
 * available under typical commercial license terms - see
 * smartclient.com/license.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 */

import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.Button;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.HStack;
import com.smartgwt.client.widgets.layout.VLayout;
import com.smartgwt.sample.showcase.client.ShowcasePanel;
import com.smartgwt.sample.showcase.client.PanelFactory;

public class ButtonAutoFitSample extends ShowcasePanel {

    public static class Factory implements PanelFactory {
        private String id;

        public Canvas create() {
            ButtonAutoFitSample panel = new ButtonAutoFitSample();
            id = panel.getID();
            return panel;
        }

        public String getID() {
            return id;
        }
    }

    public Canvas getViewPanel() {

        final Button findButton = new Button("Find Related");
        findButton.setAutoFit(true);
        findButton.setIcon("icons/16/find.png");

        final IButton searchButton = new IButton("Search within results");
        searchButton.setAutoFit(true);
        searchButton.setIcon("icons/16/icon_add_files.png");
        
        HStack stack = new HStack();
        stack.setMembersMargin(20);
        stack.setHeight(24);
        stack.setBorder("1px solid blue");
        stack.addMember(findButton);
        stack.addMember(searchButton);

        final Button button = new Button("Change Title");
        button.setLeft(60);
        button.setTop(45);
        button.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                String saveTitle = findButton.getTitle();
                findButton.setTitle(searchButton.getTitle());
                searchButton.setTitle(saveTitle);
            }
        });

        HLayout hLayout = new HLayout();
        hLayout.setMembersMargin(20);
        hLayout.addMember(stack);

        VLayout layout = new VLayout();
        layout.setAutoHeight();
        layout.setMembersMargin(30);
        layout.addMember(hLayout);
        layout.addMember(button);
        return layout;
    }

    public String getIntro() {
        return "Buttons can automatically size to accomodate the title and icon, and resize" +
               " automatically when the title is changed, notifying components around them they" +
               " have changed size.";
    }

    public String getSourceUrl() {
        return "source/buttons/ButtonAutoFitSample.java.html";
    }
}
</textarea>
<script class="javascript">
dp.SyntaxHighlighter.HighlightAll('code');
</script>
</body>
</html>
